package v1ch06.staticInnerClass;

/**
 * 这个程序演示了静态内部类的使用。
 *
 * @author Cay Horstmann
 * @version 1.02 2015-05-12
 */
public class StaticInnerClassTest {
	public static void main(String[] args) {
		double[] d = new double[20];
		for (int i = 0; i < d.length; i++)
			d[i] = 100 * Math.random();
		ArrayAlg.Pair p = ArrayAlg.minmax(d);
		System.out.println("min = " + p.getFirst());
		System.out.println("max = " + p.getSecond());
	}
}

class ArrayAlg {
	/**
	 * 计算数组的最小值和最大值
	 *
	 * @param values 浮点数数组
	 * @return 一对，其第一个元素是最小值，其第二个元素是最大值
	 */
	public static Pair minmax(double[] values) {
		double min = Double.POSITIVE_INFINITY;
		double max = Double.NEGATIVE_INFINITY;
		for (double v : values) {
			if (min > v) min = v;
			if (max < v) max = v;
		}
		return new Pair(min, max);
	}
	
	/**
	 * 一对浮点数
	 */
	public static class Pair {
		private double first;
		private double second;
		
		/**
		 * 从两个浮点数构造一对
		 *
		 * @param f 第一个数字
		 * @param s 第二个数字
		 */
		public Pair(double f, double s) {
			first = f;
			second = s;
		}
		
		/**
		 * Returns the first number of the pair
		 *
		 * @return the first number
		 */
		public double getFirst() {
			return first;
		}
		
		/**
		 * Returns the second number of the pair
		 *
		 * @return the second number
		 */
		public double getSecond() {
			return second;
		}
	}
}
